class ${1:ReverseTo}
  def initialize(${2:param})
    @$2 = $2
  end

  def matches?(actual)
    @actual = actual
    # Satisfy expectation here. Return false or raise an error if it's not met.
    ${3:@actual.reverse.should == @$2}
    true
  end

  def failure_message
    "expected #{@actual.inspect} to ${4} #{@$2.inspect}, but it didn't"
  end

  def negative_failure_message
    "expected #{@actual.inspect} not to ${5} #{@$2.inspect}, but it did"
  end
end

def ${6:reverse_to}(${7:expected})
  ${8}.new($7)
end
